/*
 * @Author: 尔尔
 * @Date: 2023-12-05 10:54:12
 * @LastEditors: 尔尔
 * @LastEditTime: 2025-04-30 14:28:54
 * @FilePath: \ERP\src\main.js
 * @filePurpose:
 */
import Vue from "vue"
import CKEditor from "ckeditor4-vue"

Vue.use(CKEditor)
import Cookies from "js-cookie"
// 将自动注册所有组件为全局组件
import dataV from "@jiaminghi/data-view"

Vue.use(dataV)
import Element from "element-ui"
import "./assets/styles/element-variables.scss"

import "@/assets/styles/index.scss" // global css
import "@/assets/styles/hmp.scss" // hmp css
import App from "./App"
import store from "./store"
import router from "./router"
import directive from "./directive" // directive
import plugins from "./plugins" // plugins
import { download } from "@/utils/request"
import "./assets/icons" // icon
import "./permission" // permission control
import { getDicts } from "@/api/system/dict/data"
import { getConfigKey } from "@/api/system/config"
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"
// 引入echarts
import * as echarts from "echarts"
import "echarts-gl" //3D地图插件
// 分页组件
import Pagination from "@/components/Pagination"
// 自定义表格工具组件
import RightToolbar from "@/components/RightToolbar"
// 富文本组件
import Editor from "@/components/Editor"
// 文件上传组件
import FileUpload from "@/components/FileUpload"
// 图片上传组件
import ImageUpload from "@/components/ImageUpload"
// 图片预览组件
import ImagePreview from "@/components/ImagePreview"
// 字典标签组件
import DictTag from "@/components/DictTag"
// 头部标签组件
import VueMeta from "vue-meta"
// 字典数据组件
import DictData from "@/components/DictData"
// 全局混入 缓存显隐列的设置
import showColumn from "@/views/components/minxin/explicitImplicitCache.js"

// 注册全局混入
Vue.mixin(showColumn)

// 全局方法挂载
Vue.prototype.getDicts = getDicts
Vue.prototype.getConfigKey = getConfigKey
Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.$echarts = echarts
// 监听localstorage的值  （对应在index.vue中写入）
var orignalSetItem = localStorage.setItem
localStorage.setItem = function (key, newValue) {
  orignalSetItem.apply(this, arguments);
	// 要监听的key为todoMessage
	if (key === "todoMessage") {
		var setItemEvent = new Event("setItemEvent")
		setItemEvent.newValue = newValue
		window.dispatchEvent(setItemEvent)
	}
}
// 全局组件挂载
Vue.component("DictTag", DictTag)
Vue.component("Pagination", Pagination)
Vue.component("RightToolbar", RightToolbar)
Vue.component("Editor", Editor)
Vue.component("FileUpload", FileUpload)
Vue.component("ImageUpload", ImageUpload)
Vue.component("ImagePreview", ImagePreview)

Vue.use(directive)
Vue.use(plugins)
Vue.use(VueMeta)
DictData.install()

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online! ! !
 */

Vue.use(Element, {
	size: Cookies.get("size") || "medium" // set element-ui default size
})

Vue.config.productionTip = false

new Vue({
	el: "#app",
	router,
	store,
	render: h => h(App)
})
